#ifndef ESTRATEGIARECURSOESCRITURADIRECTA_H_
#define ESTRATEGIARECURSOESCRITURADIRECTA_H_

#include "../Bytes.h"
#include "EstrategiaRecurso.h"

class Almacenamiento;
class Buffer;

/*
 * Funcion: estrategia de recursos que trabaja con un buffer
 * con la politica de escritura directa.
 */
class EstrategiaRecursoEscrituraDirecta: public EstrategiaRecurso {

private:
	Almacenamiento* archivo;
	Buffer* buffer;

public:

	/*
	 * Pre: -
	 * Pos: crea una nueva instancia.
	 */
	EstrategiaRecursoEscrituraDirecta(Archivo* archivo);

	/*
	 * Pre: -
	 * Pos: Libera los recursos instanciados.
	 */
	virtual ~EstrategiaRecursoEscrituraDirecta();

	/*
	 * Pre: -
	 * Pos: escribe los bytes.
	 */
	void escribir(const Bytes& bytes, offset offset);

	/*
	 * Pre: -
	 * Pos: lee los bytes.
	 */
	Bytes leer(offset offset, cantBytes cantBytes);

	/*
	 * Pre: memoria suficiente en caso de expandir el archivo.
	 * Pos: setea el tamanio del archivo.
	 */
	bool setTamanioArchivo(cantBytes nuevo);

	void imprimirBuffer();

};

#endif /* ESTRATEGIARECURSOESCRITURADIRECTA_H_ */
